﻿package com.logrogue.console.data {
	
	/**
	 * Базовый прототип записей лога.
	 * 
	 * @version  1.1
	 * @author   meps
	 */
	public class CLogRecord implements ILogRecord {
		
		/**
		 * Конструктор.
		 * 
		 * @param   время в мс от старта приложения;
		 * 
		 * @param   идентфикатор клиентской платформы;
		 * 
		 * @param   уровень записи;
		 * 
		 * @param   идентификатор модуля;
		 * 
		 * @param   идентификатор разработчика;
		 * 
		 * @param   файл из которого была сделана запись;
		 * 
		 * @param   номер строки в файле из которой производился вызов;
		 */
		public function CLogRecord(time:int, platform:int = 0, level:int = 0, module:int = 0, developer:int = 0, file:String = null, line:int = 0) {
			m_id = ++m_globalId;
			m_time = time;
			m_platform = platform;
			m_level = level;
			m_module = module;
			m_developer = developer;
			m_file = file;
			m_line = line;
		}

		/**
		 * @inheritDoc
		 */
		public function get id():int { return m_id; }
		
		/**
		 * @inheritDoc
		 */
		public function get platform():int { return m_platform; }
		
		/**
		 * @inheritDoc
		 */
		public function get type():int { return m_type; }
		
		/**
		 * @inheritDoc
		 */
		public function get time():int { return m_time; }
		
		/**
		 * @inheritDoc
		 */
		public function get level():int { return m_level; }
		
		/**
		 * @inheritDoc
		 */
		public function get file():String { return m_file; }
		
		/**
		 * @inheritDoc
		 */
		public function get line():int { return m_line; }
		
		/**
		 * @inheritDoc
		 */
		public function get module():int { return m_module; }
		
		/**
		 * @inheritDoc
		 */
		public function get developer():int { return m_developer; }
		
		/**
		 * @inheritDoc
		 */
		public function get PLATFORM_AS1():int { return 1; }
		
		/**
		 * @inheritDoc
		 */
		public function get PLATFORM_AS2():int { return 2; }
		
		/**
		 * @inheritDoc
		 */
		public function get PLATFORM_AS3():int { return 3; }
		
		/**
		 * @inheritDoc
		 */
		public function get TYPE_MESSAGE():int { return 1; }
		
		/**
		 * @inheritDoc
		 */
		public function get TYPE_IMAGE():int { return 2; }
		
		/**
		 * @inheritDoc
		 */
		public function get TYPE_OBJECT():int { return 3; }
		
		/**
		 * @inheritDoc
		 */
		public function get TYPE_XML():int { return 4; }
		
		/**
		 * @inheritDoc
		 */
		public function get LEVEL_FATAL():int { return 500; }
		
		/**
		 * @inheritDoc
		 */
		public function get LEVEL_ERROR():int { return 400; }
		
		/**
		 * @inheritDoc
		 */
		public function get LEVEL_WARNING():int { return 300; }
		
		/**
		 * @inheritDoc
		 */
		public function get LEVEL_MESSAGE():int { return 200; }
		
		/**
		 * @inheritDoc
		 */
		public function get LEVEL_DEBUG():int { return 100; }
		
		public function toString():String {
			return "[CLogRecord id:" + m_id +
				", platform:" + m_platform +
				", type:" + m_type +
				", time:" + m_time +
				", level:" + m_level +
				", file: " + m_file +
				", line:" + m_line +
				", module:" + m_module +
				", developer:" + m_developer +
				"]";
		}
		
		///////////////////////////////////////////////////////////////////////
		
		protected static var m_globalId:int = 0;
		
		protected var m_id:int;
		protected var m_platform:int;
		protected var m_type:int;
		protected var m_time:int;
		protected var m_level:int;
		protected var m_file:String;
		protected var m_line:int;
		protected var m_module:int;
		protected var m_developer:int;
		
	}
	
}